package com.vepick.metier.requetes;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.vepick.beans.Tache;

public class RequetesSurVelo {
	public static int DeclarerVeloHS(Connection conn, int numVelo)
			throws SQLException {
		String requete = "UPDATE VELO SET ETATVELO = 0 WHERE IDVELO ="
				+ numVelo;
		Statement stmt = conn.createStatement();
		return stmt.executeUpdate(requete);
	}
	
	public static int ReparerVelo(Connection conn, int numVelo)
			throws SQLException {
		String requete = "UPDATE VELO SET ETATVELO = 1 WHERE IDVELO ="
				+ numVelo;
		Statement stmt = conn.createStatement();
		return stmt.executeUpdate(requete);
	}
	
	public static String LocalisationVelo(Connection conn, int idVelo) {
		String localisation = "";
		
		// R�cup�ration de la tache courrante
		try {
			String requete = "SELECT LocalisationVelo FROM VELO WHERE idVelo="+idVelo;
			Statement stmt = conn.createStatement(); 
			ResultSet res = stmt.executeQuery(requete);
			if(res.next()) {
				localisation = res.getString("LocalisationVelo");
	        }
			res.close();
		} catch (SQLException e) {
			System.out.println("Aucun velo n'a ete trouve dans la base de donnees.");
		}
		return localisation;		
	}


	public static int MettreVeloEnRegulation(Connection conn, int numVelo, int idTache) {
		int res = -1;
		try {
			// On regarde la localisation courante du v�lo
			String localisation = RequetesSurVelo.LocalisationVelo(conn, numVelo);
			
			Statement stmt = conn.createStatement();
			
			// Si le v�lo �tait attach� � une bornette
			if(localisation.trim().equals("Bornette")) {
				// On d�tache le v�lo de la bornette
				String updateBornette = "UPDATE Bornette SET idVelo = null WHERE idVelo="+numVelo;
				stmt.executeUpdate(updateBornette);
			}

			// Cr�ation de la r�gulation
			String insertRegulation = "INSERT INTO ESTREGULEPAR VALUES(" +
					idTache + ","+numVelo+")";
			res = stmt.executeUpdate(insertRegulation);
			
			// Modification de la localisation du v�lo
			String updateLocalisation = "UPDATE Velo SET LocalisationVelo = 'Regulation' WHERE idVelo="
					+ numVelo;
			stmt.executeUpdate(updateLocalisation);
			
			// Commit
			conn.commit();
			
			return res;
		} catch (SQLException e) {
			res = -1;
			e.printStackTrace();
		}
		return res;
	}
	
	public static int DeposerVeloEnStation(Connection conn, int numVelo, int idBornnete) {
		int res = -1;
		try {
			// On regarde la localisation courante du v�lo
			String localisation = RequetesSurVelo.LocalisationVelo(conn, numVelo);			
			Statement stmt = conn.createStatement();
			
			// Si le velo est dans le vehicule de regulation
			if(localisation.trim().equals("Regulation")) {
				// On enleve le velo du vehicule de regulation
				String updateBornette = "DELETE FROM ESTREGULEPAR WHERE idVelo="+numVelo;
				stmt.executeUpdate(updateBornette);
			}

			// On attache le velo a une bornette
			String updateBornette = "UPDATE BORNETTE SET idVelo ="+numVelo+" WHERE idBornette ="+idBornnete;
			res = stmt.executeUpdate(updateBornette);
			
			// Modification de la localisation du velo
			String updateLocalisation = "UPDATE Velo SET LocalisationVelo = 'Bornette' WHERE idVelo="
					+ numVelo;
			stmt.executeUpdate(updateLocalisation);
			
			// Commit
			conn.commit();
			
			return res;
		} catch (SQLException e) {
			res = -1;
			e.printStackTrace();
		}
		return res;
	}
}
